import { LgFormProps } from '@/soar';

/**
 * @author luguoxiang
 * @date 2022/9/17
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
export declare interface EditContainerProps {
  /**
   * 标题
   */
  header?: string;
  /**
   * 是否加载中
   */
  loading?: boolean;
  /**
   * 确定按钮
   */
  confirm: string | false;
  /**
   * 取消按钮
   */
  cancel: string | false;
}

export interface EditContainerOk<T> {
  /**
   * 表单数据
   */
  values: any;
  /**
   * 打开页面时传入的参数
   */
  params: any;
  /**
   * 初始业务数据
   */
  data: T;
  /**
   * 数据是否已改变
   */
  changed: boolean;
  /**
   * 是否是更新的
   */
  isUpdate: boolean;
}

export interface UseEditContainerOptions<T> {
  /**
   * 编辑容器对象
   */
  containerRef: any;
  /**
   * 表单容器
   */
  formRef: any;
  /**
   * 远程获取数据
   * @param params
   */
  getData(params: any): Promise<any>;
  /**
   * 当按下确定按钮时
   * @param params
   */
  onOk?(params: EditContainerOk<T>): Promise<any>;

  /**
   * 是否更新
   * @param params
   */
  isUpdate?(params: any): boolean;

  /**
   * 默认数据，注意打开弹窗传入参数会导致该参数失效
   */
  data?: T;

  /**
   * 标题
   */
  header?: string;

  /**
   * 容器配置数据
   */
  containerProps?: any;
  /**
   * 表单配置数据
   */
  formProps?: LgFormProps;
  /**
   * 关闭时的提示消息
   */
  // closeMsg?: string;

  /**
   * 当容器打开时
   * @param params
   */
  onOpen?(params: any): void;

  /**
   * 当容器关闭时
   */
  onClose?(): void;
}
